package com.rcadmin.busi.web.dao;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;

import com.google.common.collect.Lists;
import com.rcadmin.busi.web.contant.TemplateType;
import com.rcadmin.busi.web.ddl.WebTemplate;
import com.rcadmin.busi.web.ddl.WebTemplateGroupkey;
import com.rcadmin.common.contant.IsEff;
import com.rcadmin.core.jpa.BaseDao;
import com.rcadmin.core.jpa.DaoException;
import com.rcadmin.core.jpa.util.PageBean;
import com.rcadmin.util.SqlUtil;

/**
 * 
 * @author tanson lam
 * @create 2016年10月13日
 */
@Component
public class TemplateDao {
	@Resource
	private BaseDao baseDao;

	/**
	 * 获取模板包所有的模板
	 * 
	 * @param userId
	 *            模板页面名称
	 * @param templatePackageId
	 *            模板包ID
	 * @return
	 */
	public List<WebTemplate> findByTemplatePackageId(Integer userId,
			Integer templatePackageId) {
		StringBuilder query = new StringBuilder();
		query.append(" and user_id =  ").append(userId);
		query.append(" and template_package_id = ").append(templatePackageId);
		return baseDao.find(query.toString(), WebTemplate.class);
	}

	/**
	 * 获取模板包所有的资源模板
	 * 
	 * @param userId
	 *            模板页面名称
	 * @param templatePackageId
	 *            模板包ID
	 * @return
	 */
	public List<WebTemplate> findByResourceTemplatePackageId(Integer userId,
			Integer templatePackageId) {
		StringBuilder query = new StringBuilder();
		query.append(" and user_id =  ").append(userId);
		query.append(" and iseff = '").append(IsEff.EFFECTIVE).append("'");
		query.append(" and template_package_id = ").append(templatePackageId);
		query.append(" and template_type =  '")
				.append(TemplateType.RES.getType()).append("'");
		return baseDao.find(query.toString(), WebTemplate.class);
	}

	/**
	 * 查找单个模板信息
	 * 
	 * @param userId
	 * @param templateId
	 * @return
	 */
	public WebTemplate findOne(Integer userId, Integer templateId) {
		StringBuilder query = new StringBuilder();
		query.append(" and id = ").append(templateId);
		query.append(" and user_id = ").append(userId);
		return baseDao.findOne(query.toString(), WebTemplate.class);
	}

	/**
	 * 查找模板
	 * 
	 * @param templateName
	 *            模板页面名称
	 * @param templatePackageId
	 *            模板包ID
	 * @return
	 */
	public WebTemplate findByTemplateName(Integer userId, String templateName,
			Integer templatePackageId) {
		StringBuilder query = new StringBuilder();
		query.append(" and user_id = ").append(userId);
		query.append(" and iseff = '").append(IsEff.EFFECTIVE).append("'");
		query.append(" and template_package_id = ").append(templatePackageId);
		query.append(" and template_path = '").append(templateName).append("'");
		return baseDao.findOne(query.toString(), WebTemplate.class);
	}

	public PageBean<WebTemplate> pageQuery(String condition, String orderBy,
			Integer pageSize, Integer page) {
		return baseDao.pageQuery(condition, "order by template_package_id",
				pageSize, page, WebTemplate.class);
	}

	/**
	 * 是否有相同的模板路径
	 * 
	 * @param userId
	 * @param templatePackageId
	 * @param templateId
	 * @param templatePath
	 * @return
	 * @throws DaoException
	 */
	public Boolean isDuplicateTemplatePath(Integer userId,
			Integer templatePackageId, Integer templateId, String templatePath) {
		String sql = " user_id =" + userId + " and template_path ='"
				+ templatePath + "' and template_package_id="
				+ templatePackageId;
		if (templateId != null)
			sql += " and id !=" + templateId;
		List<WebTemplate> list = baseDao.find(sql, WebTemplate.class);
		if (list != null && !list.isEmpty()) {
			return true;
		}
		return false;
	}

	/**
	 * 保存
	 * 
	 * @param webTemplate
	 */
	public void save(WebTemplate webTemplate) {
		baseDao.save(webTemplate);
	}
}
